// 元素是否在窗口展示
import { useIntersectionObserver } from '@vueuse/core'

export const lazyPlugin = {
    install(app) {
        app.directive('img-lazy', {
            // el: 指令绑定的元素 binding.value 传递给指令的值
            mounted(el, binding) {
                const { stop } = useIntersectionObserver(
                    // 触发元素
                    el,
                    // 是否到了可视窗口
                    ([{ isIntersecting }]) => {
                        if (isIntersecting) {
                            el.src = binding.value
                            // 不在监听 解决重复监听的问题
                            stop()
                        }
                    }
                )
            }
        })
    }
}